﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using SIGERP_Negocio;
using SIGERP_Entidades;

namespace SIGERP_Presentacion
{
    public partial class frmCiudadActualizar : Form
    {

        ErrorProvider ep = new ErrorProvider();
        public Ciudad c;


        public frmCiudadActualizar()
        {
            InitializeComponent();
        }

        public frmCiudadActualizar(Ciudad ciudad)
        {
            c = ciudad;
            InitializeComponent();
            txtIdCiudad.Text = ciudad.id.ToString();
            txtCiudad.Text = ciudad.descripcion;
            txtCodigoPostal.Text = ciudad.cod_postal.ToString();
        }


        private void frmCiudadActualizar_Load(object sender, EventArgs e)
        {
            cmbPais.Items.Clear();
            List<Pais> paises = Paises.GetAll();
            foreach (Pais p in paises)
            {
                cmbPais.Items.Add(p);
            }
            cmbPais.Width = Utilities.adjustWidth(cmbPais);
            foreach (Pais p in cmbPais.Items)
                if (p.id == c.provincia.pais.id) cmbPais.SelectedItem = p;
            foreach (Provincia p in cmbProvincia.Items)
                if (p.id == c.provincia.id) cmbProvincia.SelectedItem = p;
        }

        private void cmbPais_SelectedIndexChanged(object sender, EventArgs e)
        {
            cmbProvincia.Items.Clear();
            Provincia prov = new Provincia();
            prov.id = 0;
            prov.descripcion = "";
            cmbProvincia.Items.Add(prov);
            cmbProvincia.SelectedIndex = 0;
            List<Provincia> provincias = Provincias.GetAllProvinciasPorPais((Pais)cmbPais.SelectedItem);
            foreach (Provincia p in provincias)
            {
                cmbProvincia.Items.Add(p);
                if(p.id==c.provincia.id) cmbProvincia.SelectedItem=p;
            }
            cmbProvincia.Width = Utilities.adjustWidth(cmbProvincia);
                
        }

        private void btnCancelar_Click_1(object sender, EventArgs e)
        {
            Close();
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            ep.Clear();

            if (txtCiudad.Text.Length == 0)
            { 
                ep.SetError(txtCiudad, "Debe ingresar el nombre de la ciudad.");
                return;
            }

            if (txtCodigoPostal.Text.Length == 0)
            {
                ep.SetError(txtCodigoPostal, "Debe ingresar un código postal.");
                return;
            }
            try {
                Convert.ToInt32(txtCodigoPostal.Text);
            }
            catch {
                ep.SetError(txtCodigoPostal, "El código postal debe ser un entero.");
                return;
            }

            if (((Pais)cmbPais.SelectedItem).id == 0)
            { 
                ep.SetError(cmbPais, "Debe seleccionar un pais.");
                return;
            }

            if (((Provincia)cmbProvincia.SelectedItem).id == 0)
            { 
                ep.SetError(cmbProvincia, "Debe seleccionar una provincia.");
                return;
            }

            if ((c.descripcion.Equals(txtCiudad.Text) && c.provincia.id == ((Provincia)cmbProvincia.SelectedItem).id))
            {
                actualizarCiudad();
            }
            else
            {
                Ciudad ciu = new Ciudad();
                ciu.descripcion = txtCiudad.Text.ToUpper();
                ciu.provincia = (Provincia)cmbProvincia.SelectedItem;

                if (Ciudades.validarSiExiste(ciu))
                {
                    MessageBox.Show("La ciudad ingresada ya existe", Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2);
                }
                else
                {
                    actualizarCiudad();
                }
            }           
            
        }

        private void actualizarCiudad()
        {
            c.id = Convert.ToInt32(txtIdCiudad.Text);
            c.descripcion = txtCiudad.Text.ToUpper();
            c.cod_postal = Convert.ToInt32(txtCodigoPostal.Text);
            c.provincia = (Provincia)cmbProvincia.SelectedItem;
            Ciudades.Actualizar(c);
            DialogResult = DialogResult.OK;
            Close();
        }

        private void toolStripAyuda_Click(object sender, EventArgs e)
        {
            Utilities.mostrarAyuda(this, (this.GetType().ToString() + ".htm").Replace("SIGERP_Presentacion.", ""));
        }

 
    }
}
